// ✅ 真实案例：跨平台 UI 组件库（比如 AWT 或 模拟开发框架）
// 想象你要做一个跨操作系统的图形界面程序，比如：

// 在 Windows 上运行，按钮是 Windows 风格
// 在 macOS 上运行，按钮是 macOS 风格
// 在 Linux 上运行，按钮是 Linux 风格
// 而且不只是按钮，还有：

// 文本框（TextBox）
// 下拉框（ComboBox）
// 复选框（CheckBox）
// 它们都必须保持同一套风格！

public class AbstractFactoryUse
{
  public void Main()
  {
    // 模拟运行环境
    IGuiFactory factory;

    if (Environment.OSVersion.Platform == PlatformID.Win32NT)
    {
      factory = new WindowsGuiFactory();
    }
    else if (Environment.OSVersion.Platform == PlatformID.Unix)
    {
      // 假设是 macOS
      factory = new MacGuiFactory();
    }
    else
    {
      throw new NotSupportedException("不支持的操作系统");
    }

    // 创建一整套控件 —— 它们自动是同一种风格！
    var button = factory.CreateButton();
    var textBox = factory.CreateTextBox();
    var comboBox = factory.CreateComboBox();

    // 渲染界面
    button.Render();    // → Windows 风格
    textBox.Render();   // → Windows 风格
    comboBox.Render();  // → Windows 风格
  }
}